From 0cf0ce780c18822ddb097fd8efbe1bbba12b4a7f Mon Sep 17 00:00:00 2001 From: Matt Brubeck Date: Mon, 6 Jun 2016 10:09:33 -0700 Subject: [PATCH] Test for correct library search paths during cargo run --- tests/run.rs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/tests/run.rs b/tests/run.rs index 53ab2b0cb..7f821eef9 100644 --- a/tests/run.rs +++ b/tests/run.rs @@ -1,8 +1,10 @@ +extern crate cargo; extern crate cargotest; extern crate hamcrest; use std::path::MAIN_SEPARATOR as SEP; +use cargo::util::paths::dylib_path_envvar; use cargotest::support::{project, execs, path2url}; use hamcrest::{assert_that, existing_file}; @@ -578,3 +580,33 @@ fn run_from_executable_folder() { hello ")); } + +#[test] +fn run_with_library_paths() { + let p = project("foo") + .file("Cargo.toml", r#" + [project] + name = "foo" + version = "0.0.1" + authors = [] + build = "build.rs" + "#) + .file("build.rs", r#" + fn main() { + println!("cargo:rustc-link-search=native=foo"); + println!("cargo:rustc-link-search=bar"); + println!("cargo:rustc-link-search=/path=containing=equal=signs"); + } + "#) + .file("src/main.rs", &format!(r#" + fn main() {{ + let search_path = std::env::var_os("{}").unwrap(); + let paths = std::env::split_paths(&search_path).collect::>(); + assert!(paths.contains(&"foo".into())); + assert!(paths.contains(&"bar".into())); + assert!(paths.contains(&"/path=containing=equal=signs".into())); + }} + "#, dylib_path_envvar())); + + assert_that(p.cargo_process("run"), execs().with_status(0)); +} -- 2.30.2